import struct
'''
양수에서 시프트오퍼레이터를 쓰면 bit가 한칸 우측으로 가게 됩니다.
10 을 이진수로 표현하면 1010
오른쪽으로 시프트 하게되면
0101이 되어 5를 가리킵니다.

1010
0101 이후에 0이 사라짐.

여기서 자리수가 4자리(?)이므로 4비트겠네요.

'''
print(format(int(10),'b').zfill(32))
# >> 출력 00000000000000000000000000001010
print(format(int(10>>1),'b').zfill(32))
# >> 출력 00000000000000000000000000000101

'''
이를 응용해서 음수를 출력해보면
파이썬으로 비슷하게 구현 해 보았습니다. 좌측으로 1칸 이동하고 0이 채워집니다.
아래는 32비트입니다.
'''
print("".join(str(1 & int(10) >> i) for i in range(32)[::-1]))
# >> 00000000000000000000000000001010
print("".join(str(1 & int(-10) >> i) for i in range(32)[::-1]))
# >> 11111111111111111111111111110110
print("".join(str(1 & int(-10<<1) >> i) for i in range(32)[::-1]))
# >> 11111111111111111111111111101100
print("".join(str(1 & int(-10<<2) >> i) for i in range(32)[::-1]))
# >> 11111111111111111111111111011000
'''
비트는 최소 단위 입니다. 32비트면 32칸... 위의 자바 코드는 1혹은0의 갯수가 32개 이므로 32비트 환경인거 같네요...
이해가 가시나요?
'''